In the last twenty years microprocessor speed increased by several orders of magnitude and Digital Signal Processors (DSPs) became ubiquitous. It became feasible and attractive to transition from analog communication to digital communication. Digital communication offers the major advantage of being able to more efficiently utilize bandwidth and allows for error correcting techniques to be used. Thus by using digital technology one can send more information through a given allocated spectrum space and send the information more reliably. Digital communication can use radio links (wireless) or physical network media (e.g., fiber optics, copper networks).
Digital communication can be used for different types of communication such as audio, video or telemetry for example. A digital communication system includes a sending device and a receiving device. In a system capable of two-way communication each device has both sending and receiving circuits. In a digital sending or receiving device there are multiple staged processes through which data is passed between the stage at which it is input through an input (e.g., microphone, camera, sensor) and the stage at which it is used to modulate a carrier wave and transmitted. After (1) being input and then digitized, (2) some initial noise filtering may be applied, followed by (3) source encoding and (4) finally channel encoding. The present invention as will be described in the succeeding pages can be considered to fall in the source encoding stage.
One important type of data that is transmitted through digital communication systems is audio data. Audio data is a specific type of data within the broader category of time series data. In order for a communication system (such as a cellular telephone system) to be able to handle a large amount of communications within a limited allocated bandwidth multiple stages of compression an encoding are applied to digitized audio before it is transmitted through the communication system. For voice data, initial encoding can be based on a sophisticated yet somewhat simplified model of the human vocal apparatus, as in the case of Algebraic Code Excited Linear Predictive (ACELP) voice encoding. More generally, for different types of audio including but not limited to voice, other techniques such as the Modified Discrete Cosine Transform (MDCT) can be used. The techniques that are applied to audio in the initial encoding stages produce output in the form of vectors with integer valued (quantized) elements. For example one vector can be output for each successive short time period of 20 milliseconds which is called an audio frame. One way to limit the amount of information that is used to represent an audio frame, in order to work within bandwidth constraints, is to limit the total number of quanta (sum of the integer valued elements) in an audio frame. Once such a limit is imposed, it is possible efficiently represent (losslessly compress) the vectors using a technique called Factorial Pulse Coding (FPC). FPC is a form of combinatorial coding. An early version of FPC is described in the paper J. P. Ashley et al, “Wideband Coding of Speech Using a Scalable Pulse Codebook”, 2000 IEEE Workshop on Speech Coding, Sep. 17, 2000. In FPC an ordering is defined for all the possible vectors that meet the imposed limit, and one or more indexes that specify a particular position in that ordering are used as a code to represent a particular vector corresponding to the particular position. An advantage of FPC is that encoding is highly efficient in terms of the number of bits needed to encode (represent) the vectors. A drawback is that computing the indexes for a given vector involves evaluation of combinatorial functions and is computationally intensive. U.S. Pat. No. 7,461,106 entitled “Apparatus and Method for Low Complexity Combinatorial Coding of Signals” provides advancements of FPC which use approximations of the combinatorial functions in order to reduce the computational cost of encoding and decoding.                An alternative to FPC is Arithmetic Coding (AC). AC is described in co-pending patent application Ser. No. 12/247,440 entitled “Arithmetic Encoding For CELP Encoders”. AC is a form of range coding. In AC a binary sequence is mapped to a sub-region (probability region) of a code space (e.g., a subinterval of the interval from zero to one), and a number within the sub-region is used as a code to represent the binary sequence. For the initial bit the code space is divided into two sub-regions. One sub-region has a size proportional to the probability of a zero bit in the first bit position and the remaining sub-region has a size proportional to the probability of a one bit (one minus the probability of zero bit). One of the sub-regions is selected based on the actual value of the first bit. Successive bits, successively divide previously selected sub-regions in like manner until the complete binary sequence has been processed and a final sub-region has been identified. As taught in U.S. patent application Ser. No. 12/247,440 AC can also be used to encode integer valued (as opposed to binary) vectors. In order to do so, various information defining the integer valued vector is first transformed into a set of binary vectors and these are encoded using AC.        
AC and FPC are two completely different types of encoders and there are certain advantages to each. For example, the inventors have made empirical observations that AC is more efficient when number of zero's and one's in binary vector to be encoded is more nearly equal, and otherwise FPC is more efficient. It would be desirable to be able to combine AC and FPC in order to obtain the advantages of both in one encoder and decoder system.
Skilled artisans will appreciate that elements in the figures are illustrated for simplicity and clarity and have not necessarily been drawn to scale. For example, the dimensions of some of the elements in the figures may be exaggerated relative to other elements to help to improve understanding of embodiments of the present invention.